import JsonP from 'jsonp';
import axios from 'axios';
import { Modal } from 'antd';
import Utils from './../utils/utils';

export default class Axios {

    static requestList(_this,url,param,isMock){
        var data = {
            param:param,
            isMock
        };
        this.ajax({
            url,
            data
        }).then((data)=>{
            if(data && data.result){
                let list = data.result.list.map((item,index) => {
                    item.key = index;
                    return item;
                });
                _this.setState({
                    list,
                    pagination:Utils.pagination(data, (current) => {
                        _this.params.page = current;
                        _this.requestList();
                    })
                });
            }
        });
    }
    static jsonp(options){
        return new Promise((resolve,reject)=>{
            JsonP(options.url, {
                param:'callback'
            },function(err,response) {
                if( response.status == 'success' ){
                    resolve(response);
                } else {
                    reject(response.message);
                }
            })
        });
    }
    static ajax(options){
        /* let loading;
        if(options.data && options.data.isShowLoading !== false){

        } */
        let baseApi = 'https://www.easy-mock.com/mock/5b95fbfd47452a5f62520af7/react_antd/';
        return new Promise((resolve,reject)=>{
            axios({
                url:options.url,
                method:'get',
                baseURL:baseApi,
                timeout:5000,
                params: (options.data && options.data.params) || ''
            }).then((response)=>{
                if(response.status == '200'){
                    let res = response.data;
                    if( res.code == '0'){
                        resolve(res);
                    }else{
                        Modal.info({
                            title:'提示',
                            content:res.msg
                        });
                    }
                }else{
                    reject(response.data);
                }
            });
        });
    }
}